// 在这里封装Vue全局的功能

// 封装一个Vue的全局组件

// 1.导入需要封装的组件
import hmnavbar from '../components/hmnavbar.vue'

// 封装一个全局的相对时间过滤器
// 导入时间插件
import dayjs from 'dayjs'

// 导入dayjs的相对时间插件
import relativeTime from 'dayjs/plugin/relativeTime'
// 导入dayjs的语言包
import 'dayjs/locale/zh-cn'
// 导入vuex
import store from '../store'
// 导入轻提示组件
import { Toast } from 'vant'
// 导入router
import router from '../router'

// 扩展插件和语言包
dayjs.extend(relativeTime)
dayjs.locale('zh-cn')

// 2.创建一个空对象
const plugin = {}

// 3.在这个对象中定义一个install方法,并将Vue传进这个方法中
plugin.install = function (Vue) {
  // 在这里封装Vue的全局功能

  // 4.全局注册插件
  Vue.component('hmnavbar', hmnavbar)

  // 全局过滤器
  Vue.filter('getTime', value => {
    return dayjs().to(dayjs(value))
  })

  // 封装全局验证是否登陆的方法
  Vue.prototype.$login = function () {
    // 判断登陆状态
    if (!store.state.isLogin) {
      // 未登录，提示用户
      Toast.fail('请登录')
      // 返回登录页并携带当前页的路由信息（方便登陆后跳转回来）
      router.push(`/login?pre=${window.location.href.split('#')[1]}`)
      // 返回false给调用者(让调用者知道登录状态)
      return false
    } else {
      // 正常登录就返回true给调用
      return true
    }
  }
}

// 5.暴露插件
export default plugin
